from math import radians

from numpy import square
from manimlib import *

class Test(Scene):
    #75cfb8
    #bbdfc8
    #f0e5d8
    #ffc478
    def construct(self):
        frame = self.camera.frame
        self.play(
            frame.animate.set_width(20),
            run_time=1
        )
        x=ValueTracker(6)
        y=12/x.get_value()

        o1=-4
        o2=-3
        s=Polygon([o1,o2,0],[o1+x.get_value(),o2,0],[o1+x.get_value(),o2+12/x.get_value(),0],[o1,o2+12/x.get_value(),0])
        s.add_updater(lambda m:m.become(Polygon([o1,o2,0],[o1+x.get_value(),o2,0],[o1+x.get_value(),o2+12/x.get_value(),0],[o1,o2+12/x.get_value(),0])))
        p=Polygon([o1,o2,0],[o1+x.get_value()+3,o2,0],[o1,o2+12/x.get_value()+4,0])
        p.add_updater(lambda m:m.become(Polygon([o1,o2,0],[o1+x.get_value()+3,o2,0],[o1,o2+12/x.get_value()+4,0])))
        self.add(p,s)

        b1=always_redraw(Brace,p,LEFT)
        number1=DecimalNumber(0,num_decimal_places=2,)
        always(number1.next_to,b1,LEFT)
        f_always(number1.set_value,p.get_height)

        b2=always_redraw(Brace,p,DOWN)
        number2 = DecimalNumber(0,num_decimal_places=2,)
        always(number2.next_to,b2,DOWN)
        f_always(number2.set_value,p.get_width)

        label_x=Tex('x')
        always(label_x.next_to,s,UP)
        label_y=Tex('y')
        always(label_y.next_to,s,RIGHT)
        label_3,label_4=Tex('3'),Tex('4')
        always(label_3.move_to,[o1,p.get_height()/2,0])
        self.add(b1,b2,number1,number2,label_y,label_x,label_3)
        self.play(x.animate.set_value(7), run_time=1)
        self.play(x.animate.set_value(3), run_time=1)
        self.wait()
        # 这会打开一个iPython终端，你可以在其中继续写你想要执行的代码
        # 在这个例子中，square/circle/self都会成为终端中的实例
